The present invention relates to output drivers for Universal Serial Bus (USB) devices. In particular, the present invention includes a CMOS pull-up circuit for a differential output driver.
The universal serial bus (USB) is a computer bus architecture used for connection of information processing devices, such as peripheral computer devices, to a personal computer (PC). For a number of reasons, use of a USB in peripheral device interconnection has become desirable. First, a wide range of information processing devices can be interconnected to other information processing devices, such as PCs, via the USB. For example, a PC""s keyboard, mouse, printer, scanner, modem, audio devices and video devices, can all be connected via the USB. Also, the USB allows connection of these and other peripheral devices using only a single connector type. Additionally, device attachment is automatically detected by the USB and software automatically configures the device for immediate use, without user intervention.
A USB device is interconnected with, and transfers data to and from, a PC via a USB cable. The USB uses a differential output driver to drive a USB data signal onto the USB cable. FIG. 1 is a schematic diagram of one example of a differential output driver 10 which can be used to drive the USB cable. Output driver 10 uses both an inverting buffer 12 and a non-inverting buffer 14. An input data signal is applied to both buffers 12 and 14, yielding a Dxe2x88x92 output 16 and a D+ output 18. Resistors 20a and 20b are provided in each output line to generate output resistance. In accordance with standard USB specifications, each resistor 20 and 20b typically has an impedance of approximately 27 ohms.
An ideal D+ and Dxe2x88x92 signal generated by output driver 10 is shown in FIG. 2 which is a voltage versus time output graph showing how D+ and Dxe2x88x92 signals should appear on outputs 18 and 16, respectively, of driver 10. By USB specifications, the high state voltage Voh should be between 2.8 and 3.6 volts. Additionally, to meet USB specifications, an output signal crossover voltage where the output changes digital state must be between 1.3 and 2.0 volts.
Also according to USB specifications, the supply voltage for the USB driver 10 should be from 4.40 to 5.25 volts. Thus, because the high state voltage, Voh, should be between 2.8 and 3.6 volts, the output driver 10 cannot be connected directly to supply voltage. Rather, a separate pull-up circuit is required to maintain a high state voltage of between 2.8 and 3.6 volts.
An example of a previous pull-up circuit 50 which has been used to maintain a high state voltage of between 2.8 and 3.6 volts is shown in FIG. 3. Pull-up circuit 50 includes a driving transistor 52, the source of which is connected to an output pad 54. Output pad 54 is used to drive the USB cable (not shown). A high state voltage on output pad 54 must be between 2.8 and 3.6 volts. The gate of driving transistor 52 is connected to the output of a NAND gate 56. The drain of driving transistor 52 is connected to the supply voltage 62 (4.40 to 5.25 volts), and the source of driving transistor 52 is connected to output 54. A first input 56a of NAND gate 56 serves as the input to pull-up circuit 50. When first input 56a is high, as explained below, pull-up circuit 50 causes output pad 54 to go high. A second input 56b of NAND gate 56 is driven by the output of a comparator 58. A first input 58a of comparator 58 is connected to output pad 54 and a second input 58b to comparator 58 is driven by a voltage divider 60.
When input 56a to NAND gate 56 is high, the output of NAND gate 56 can go low. This allows driving transistor 52 to be turned on (because the gate of driving transistor 52 is inverted) to pull-up output pad 54 to a digital high state (that is, to a voltage of from 2.8 to 3.6 volts). When input 56a is high, the remainder of pull-up circuit holds output pad 54 in a digital high state. Specifically, voltage divider 60, including resistors 60a and 60b, is connected between the power supply voltage of from 4.40 to 5.25 volts and ground. Divider 60 divides this voltage down to the specified high state voltage of between 2.8 and 3.6 volts (Voh). Comparator 58 compares this voltage to the voltage on output pad 54. If the voltage on output pad 54 is higher than Voh, then the output of comparator 58 is high. If the voltage on output pad 54 is lower than Voh, then the output of comparator 58 is low. Thus, when the voltage on output pad 54 is higher than Voh, the output of NAND gate 56 is high (because input 56b is inverted) and driving transistor 52 is turned off (because the gate of driving transistor 52 is inverted). When driving transistor 52 is off, the voltage at output pad 54 will drop below Voh, and the output of comparator 58 goes low to turn on driving transistor 52. This brings the voltage at output pad 54 back up above Voh.
If a driving transistor 52 is a PMOS device, an approximate resultant voltage versus current characteristic 82 which is generated on output pad 54 is shown in FIG. 4 which is a voltage versus current graph 80 of the output of pull-up circuit 50. When V reaches Voh, the output of comparator 58 will go low, shutting off driving transistor 52. This causes the voltage at output pad 54 to drop below Voh again, turning on driving transistor 52. The resultant voltage at output pad 54, when input 56a is switched high, is shown in FIG. 5, which is a time versus voltage graph of the voltage at output pad 54. As shown, once the voltage reaches Voh, it is not held constant. Rather the voltage at output pad 54 oscillates about Voh with the largest excursions from Voh occurring just after input 56a goes high. FIG. 6 shows the signal illustrated in FIG. 5 superimposed on a portion of the ideal differential signal to be generated by output driver 10 shown in FIG. 2. As shown, particularly just after a state transition occurs, the oscillations of the voltage at output pad 54 can cause the rising differential signal to drop back below a state change voltage. Specifically, under USB specifications, a signal should change from a digital low state to a digital high state between 1.3 volts and 2.0 volts. Oscillating across this voltage could trigger a xe2x80x9cfalsexe2x80x9d state change from a high state (1) to a low state (0), as shown in FIG. 6. This could undesirably cause an error in data transmission on the USB bus.
Accordingly, improvement is needed in USB pull-up circuits. Specifically, the pull-up circuit should be able to drive the USB bus at the appropriate high state voltage without causing excessive oscillations or ringing which might generate data errors.
The present invention includes a method and apparatus for driving a USB which substantially eliminates ringing or oscillation around a target voltage. An electronic output driver in accordance with a present invention includes an output for providing an electrical signal, a first pull up circuit, a second pull up circuit, and a detection circuit in electrical communication with the first pull up circuit and the second pull up circuit. The first pull up circuit is in at least intermittent electrical communication with the output to provide a first voltage range to the output. The second pull-up circuit is also in at least intermittent electrical communication with the output and drives the output up to a predetermined voltage. The detection circuit detects the voltage of the output and selects the first pull up circuit or the second pull up circuit to drive the output. Preferably, the detection circuit selects either the first pull-up circuit or the second pull up circuit depending upon the voltage at the output.
Because the second pull up circuit drives the output up to a predetermined voltage, there is substantially no ringing or oscillation around the predetermined voltage. This can advantageously reduce the likelihood of a false state change signal being transmitted over the USB.
A method of driving an electrical output of an output driver in accordance with the present invention includes providing a first pull-up circuit and a second pull up circuit. The first pull-up circuit is connectable to the electrical output and is for driving the output over first range of voltages. The second pull-up circuit is also connectable to the output and is for driving the output over second range of voltages up to a first predetermined voltage. The output is driven with either the first pull-up circuit or the second pull-up circuit. The output is switched from being driven by the first pull-up circuit to the second pull-up circuit when the output reaches a second predetermined voltage.